// 给你一个整数数组nums ，请计算数组的 中心下标
// 数组 中心下标 是数组的一个下标，其左侧所有元素相加的和等于右侧所有元素相加的和。
// 如果中心下标位于数组最左端，那么左侧数之和视为0，因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。
// 如果数组有多个中心下标，应该返回 最靠近左边 的那一个。如果数组不存在中心下标，返回 -1。

#include <stdio.h>
#include <stdlib.h>

int main(){
    int arr[] = {6,-5,6,5,-6};
    int n = sizeof(arr)/sizeof(arr[0]);

    // 计算前缀和，之后直接利用sum判断某个值是否是中心下标
    int *sum = (int*)malloc(n*sizeof(int));
    sum[0] = arr[0];
    for(int i=1;i<n;i++){
        sum[i] = sum[i-1] + arr[i];
    }
    int pivotIndex = -1;
    if(sum[n-1]-sum[0]==0){
        pivotIndex = 0;
        printf("pivot index: %d",pivotIndex);
        return 0;
    }
    for(int i=1;i<n;i++){
        if(sum[i-1]==sum[n-1]-sum[i]){
            pivotIndex = i;
            break;
        }
    }
    
    printf("pivot index: %d",pivotIndex);
    return 0;
}